This invention relates to ROMs (Read-Only Memories). More specifically, this invention relates to the use of multiplexers within ROMs.
ROMs typically use multiplexers for implementing the required ROM functions such as basic reading, writing and addressing functions. The multiplexers that are used in ROMs are usually very large binary multiplexers. The very large binary multiplexers are relatively expensive in die area—i.e., they occupy relatively large areas of space on a typical die used in the implementation of semiconductor circuitry of the type used for programmable logic devices (PLDs).
The description herein relates directly to PLDs. Nevertheless, the scope of the description herein should not be considered to be limited to PLDs. Rather, the scope of the descriptions herein extends to any circuitry in which multiplexers are implemented.
FIG. 1 shows an example of a prior art ROM implementation 100. ROM 102 includes 8 addresses 102 of the Read-Only Data that provides 4-bit wide data. The 4-bit wide data is implemented as four 8:1 binary multiplexers 104. Address lines 106 may be used as control lines to dictate the output of multiplexer 104.
In order to implement ROMs using such conventional multiplexer arrangements, commonly-known synthesis tools convert each multiplexer into separate Look-up Tables (LUTs). The following table shows the relative area (as expressed in terms of the estimated number of LUTs that are required to implement the prior art ROM) used by such ROMs.
Number ofArea Estimate inData WidthData Words4-input LUTs 8 bits322416 bits326016 bits6411132 bits128447It can be seen from the foregoing table that the relative area cost depends on the size and type of ROM being implemented. The area estimates were calculated by synthesizing ROMs of the described sizes filled with randomly-generated data. Synthesis was performed using a proprietary software package of Altera Corporation of San Jose, Calif.
In view of the significant area cost associated with ROMs that use large multiplexers, it would be desirable to provide alternative synthesis systems and methods for implementing ROMs that use less multiplexers than conventional ROMs.
It would also be desirable to re-use multiplexers under certain conditions and in certain implementations of ROMs instead of converting each multiplexer into Look-up Tables separately.